import Process from "./Process"
import ProcessMemory from "./ProcessMemory"
import System from './System'
// 管理所有进程的资源管理器
export default class ProcessManage{
    // 进程列表
    processes
    // 内存空间
    metas
    // 公共内存空间
    sharedMeta
    constructor(){
        // 初始化进程列表
        this.processes = new Map()
        // 初始化 内存空间列表
        this.metas = new Map()
        // 初始化共享内存空间列表
        this.sharedMeta = new Map()
    }
    // 申请创建线程
    applyProcess(appId){
        // 创建线程
        let process = new Process(appId)
        // 创建内存空间
        let processMemory = new ProcessMemory(process.getId);
        // 设置内存空间
        process.setMemory(processMemory)
        // 注册内存空间
        this.metas.set(processMemory.getMemoryId(),processMemory)
        // 申请窗口
        let win = System.windowManage.applyWindow(process.getId())
        // 绑定窗口
        process.setWindow(win)     
        // 管理进程
        this.processes.set(process.getId(),process)
        return process
    }
    // 申请一块内存空间
    applyMemory(processId = null){
        let processMemory = new ProcessMemory(processId)
        if(processId){
            this.metas.set(processId,processMemory)
        }
        else console.error('please set processId for memory')
        return processMemory
    }
    // 共享数据
    shareMeta(key,val){
        this.shareMeta.set(key,val)
    }
    // 获取共享数据
    getShareMeta(key){
        this.shareMeta.get(key)
    }
    getProcesses(){
        return this.processes
    }
    stopProcess(processId){
        this.processes.delete(processId)
    }
}
